'\" t
.\"     Title: git-archive
.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
.\"      Date: 03/29/2020
.\"    Manual: Git Manual
.\"    Source: Git 2.26.0.106.g9fadedd637
.\"  Language: English
.\"
.TH "GIT\-ARCHIVE" "1" "03/29/2020" "Git 2\&.26\&.0\&.106\&.g9faded" "Git Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
git-archive \- Create an archive of files from a named tree
.SH "SYNOPSIS"
.sp
.nf
\fIgit archive\fR [\-\-format=<fmt>] [\-\-list] [\-\-prefix=<prefix>/] [<extra>]
              [\-o <file> | \-\-output=<file>] [\-\-worktree\-attributes]
              [\-\-remote=<repo> [\-\-exec=<git\-upload\-archive>]] <tree\-ish>
              [<path>\&...]
.fi
.sp
.SH "DESCRIPTION"
.sp
Creates an archive of the specified format containing the tree structure for the named tree, and writes it out to the standard output\&. If <prefix> is specified it is prepended to the filenames in the archive\&.
.sp
\fIgit archive\fR behaves differently when given a tree ID versus when given a commit ID or tag ID\&. In the first case the current time is used as the modification time of each file in the archive\&. In the latter case the commit time as recorded in the referenced commit object is used instead\&. Additionally the commit ID is stored in a global extended pax header if the tar format is used; it can be extracted using \fIgit get\-tar\-commit\-id\fR\&. In ZIP files it is stored as a file comment\&.
.SH "OPTIONS"
.PP
\-\-format=<fmt>
.RS 4
Format of the resulting archive:
\fItar\fR
or
\fIzip\fR\&. If this option is not given, and the output file is specified, the format is inferred from the filename if possible (e\&.g\&. writing to "foo\&.zip" makes the output to be in the zip format)\&. Otherwise the output format is
\fBtar\fR\&.
.RE
.PP
\-l, \-\-list
.RS 4
Show all available formats\&.
.RE
.PP
\-v, \-\-verbose
.RS 4
Report progress to stderr\&.
.RE
.PP
\-\-prefix=<prefix>/
.RS 4
Prepend <prefix>/ to each filename in the archive\&.
.RE
.PP
\-o <file>, \-\-output=<file>
.RS 4
Write the archive to <file> instead of stdout\&.
.RE
.PP
\-\-worktree\-attributes
.RS 4
Look for attributes in \&.gitattributes files in the working tree as well (see
the section called \(lqATTRIBUTES\(rq)\&.
.RE
.PP
<extra>
.RS 4
This can be any options that the archiver backend understands\&. See next section\&.
.RE
.PP
\-\-remote=<repo>
.RS 4
Instead of making a tar archive from the local repository, retrieve a tar archive from a remote repository\&. Note that the remote repository may place restrictions on which sha1 expressions may be allowed in
\fB<tree\-ish>\fR\&. See
\fBgit-upload-archive\fR(1)
for details\&.
.RE
.PP
\-\-exec=<git\-upload\-archive>
.RS 4
Used with \-\-remote to specify the path to the
\fIgit\-upload\-archive\fR
on the remote side\&.
.RE
.PP
<tree\-ish>
.RS 4
The tree or commit to produce an archive for\&.
.RE
.PP
<path>
.RS 4
Without an optional path parameter, all files and subdirectories of the current working directory are included in the archive\&. If one or more paths are specified, only these are included\&.
.RE
.SH "BACKEND EXTRA OPTIONS"
.SS "zip"
.PP
\-0
.RS 4
Store the files instead of deflating them\&.
.RE
.PP
\-9
.RS 4
Highest and slowest compression level\&. You can specify any number from 1 to 9 to adjust compression speed and ratio\&.
.RE
.SH "CONFIGURATION"
.PP
tar\&.umask
.RS 4
This variable can be used to restrict the permission bits of tar archive entries\&. The default is 0002, which turns off the world write bit\&. The special value "user" indicates that the archiving user\(cqs umask will be used instead\&. See umask(2) for details\&. If
\fB\-\-remote\fR
is used then only the configuration of the remote repository takes effect\&.
.RE
.PP
tar\&.<format>\&.command
.RS 4
This variable specifies a shell command through which the tar output generated by
\fBgit archive\fR
should be piped\&. The command is executed using the shell with the generated tar file on its standard input, and should produce the final output on its standard output\&. Any compression\-level options will be passed to the command (e\&.g\&., "\-9")\&. An output file with the same extension as
\fB<format>\fR
will be use this format if no other format is given\&.
.sp
The "tar\&.gz" and "tgz" formats are defined automatically and default to
\fBgzip \-cn\fR\&. You may override them with custom commands\&.
.RE
.PP
tar\&.<format>\&.remote
.RS 4
If true, enable
\fB<format>\fR
for use by remote clients via
\fBgit-upload-archive\fR(1)\&. Defaults to false for user\-defined formats, but true for the "tar\&.gz" and "tgz" formats\&.
.RE
.SH "ATTRIBUTES"
.PP
export\-ignore
.RS 4
Files and directories with the attribute export\-ignore won\(cqt be added to archive files\&. See
\fBgitattributes\fR(5)
for details\&.
.RE
.PP
export\-subst
.RS 4
If the attribute export\-subst is set for a file then Git will expand several placeholders when adding this file to an archive\&. See
\fBgitattributes\fR(5)
for details\&.
.RE
.sp
Note that attributes are by default taken from the \fB\&.gitattributes\fR files in the tree that is being archived\&. If you want to tweak the way the output is generated after the fact (e\&.g\&. you committed without adding an appropriate export\-ignore in its \fB\&.gitattributes\fR), adjust the checked out \fB\&.gitattributes\fR file as necessary and use \fB\-\-worktree\-attributes\fR option\&. Alternatively you can keep necessary attributes that should apply while archiving any tree in your \fB$GIT_DIR/info/attributes\fR file\&.
.SH "EXAMPLES"
.PP
\fBgit archive \-\-format=tar \-\-prefix=junk/ HEAD | (cd /var/tmp/ && tar xf \-)\fR
.RS 4
Create a tar archive that contains the contents of the latest commit on the current branch, and extract it in the
\fB/var/tmp/junk\fR
directory\&.
.RE
.PP
\fBgit archive \-\-format=tar \-\-prefix=git\-1\&.4\&.0/ v1\&.4\&.0 | gzip >git\-1\&.4\&.0\&.tar\&.gz\fR
.RS 4
Create a compressed tarball for v1\&.4\&.0 release\&.
.RE
.PP
\fBgit archive \-\-format=tar\&.gz \-\-prefix=git\-1\&.4\&.0/ v1\&.4\&.0 >git\-1\&.4\&.0\&.tar\&.gz\fR
.RS 4
Same as above, but using the builtin tar\&.gz handling\&.
.RE
.PP
\fBgit archive \-\-prefix=git\-1\&.4\&.0/ \-o git\-1\&.4\&.0\&.tar\&.gz v1\&.4\&.0\fR
.RS 4
Same as above, but the format is inferred from the output file\&.
.RE
.PP
\fBgit archive \-\-format=tar \-\-prefix=git\-1\&.4\&.0/ v1\&.4\&.0^{tree} | gzip >git\-1\&.4\&.0\&.tar\&.gz\fR
.RS 4
Create a compressed tarball for v1\&.4\&.0 release, but without a global extended pax header\&.
.RE
.PP
\fBgit archive \-\-format=zip \-\-prefix=git\-docs/ HEAD:Documentation/ > git\-1\&.4\&.0\-docs\&.zip\fR
.RS 4
Put everything in the current head\(cqs Documentation/ directory into
\fIgit\-1\&.4\&.0\-docs\&.zip\fR, with the prefix
\fIgit\-docs/\fR\&.
.RE
.PP
\fBgit archive \-o latest\&.zip HEAD\fR
.RS 4
Create a Zip archive that contains the contents of the latest commit on the current branch\&. Note that the output format is inferred by the extension of the output file\&.
.RE
.PP
\fBgit config tar\&.tar\&.xz\&.command "xz \-c"\fR
.RS 4
Configure a "tar\&.xz" format for making LZMA\-compressed tarfiles\&. You can use it specifying
\fB\-\-format=tar\&.xz\fR, or by creating an output file like
\fB\-o foo\&.tar\&.xz\fR\&.
.RE
.SH "SEE ALSO"
.sp
\fBgitattributes\fR(5)
.SH "GIT"
.sp
Part of the \fBgit\fR(1) suite
